package cn.good.yan;

import cn.good.yan.entity.Dict;
import cn.good.yan.mapper.DictMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

/**
 * 广播表  （字典表）每个数据库都有该表
 * 引用：application6.properties 配置文件
 *
 * @author shengren.yan
 * @create 2024/12/8
 */
@SpringBootTest
public class SplitTest6 {

    @Autowired
    private DictMapper dictMapper;


    /**
     * 广播表，添加数据
     * 每个库都需要添加
     */
    @Test
    public void testInsert() {
        // 逻辑SQL（Logic SQL） ：插入 t_dict表
        // 实际SQL（Actual SQ） ：插入 server-order1 数据源 t_dict表 和 server-order2 数据源 t_dict表
        Dict dict = new Dict();
        dict.setDictType("type1");
        dictMapper.insert(dict);
        // 保证每个库，都有该表，数据也相同
    }


    /**
     * 广播表，查询数据
     * 查询操作，只从一个节点获取数据
     * 随机负载均衡规则
     */
    @Test
    public void testSelectBroadcast(){
        // 逻辑SQL（Logic SQL） ：查询  SELECT  id,dict_type  FROM t_dict
        // 实际SQL（Actual SQ） ：查询 server-user   数据源下的 t_dict 表  （第一次查询）
        //                      查询 server-order2 数据源下的 t_dict 表  （第二次查询）
        //                      查询 server-order1 数据源下的 t_dict 表  （第三次查询）
        List<Dict> dicts = dictMapper.selectList(null);
        dicts.forEach(System.out::println);
        // 随机负载均衡规则
    }


}
